import {type AxiosRequestConfig, type AxiosResponse, InternalAxiosRequestConfig} from "axios";

export interface MyInterceptor<T = AxiosResponse> {
    // config理想的类型为InternalAxiosRequestConfig
    reqSuccessCallback?: (config: InternalAxiosRequestConfig)=> InternalAxiosRequestConfig,
    reqFailCallback?: (error: any)=>void,
    // 拦截器存在的目的就是为了得到我们理想的结果，所以这里返回泛型而不是any，将我们加工后的结果返回给调用者
    resSuccessCallback?: (res: T)=> T,
    resFailCallback?: (error: any)=>void
}

export interface MyRequestConfig<T = AxiosResponse> extends  AxiosRequestConfig{
    interceptors?: MyInterceptor<T>,
}
